スマホアプリKryptoniteの鍵ペアでEc2にSSH接続してみた
はじめに
KryptCo社により提供されているKryptonite、 スマートフォンにインストールしたアプリで鍵ペアを生成、管理し、 SSHクライアントのローカルに秘密鍵を保存することなく、公開鍵認証によるSSH接続を実現できるサービスです。
今回、無償提供されている「Kryptonite Core」を利用し、スマートフォン上で管理された秘密鍵を利用して、 EC2のSSH接続を行う機会がありましたので、紹介させて頂きます。
操作手順
モバイルアプリ
アプリのインストール
公式で配布されている、iOS用、Android用のアプリをインストールします。
今回、iOS版のアプリを利用しました。
鍵の生成
アプリを起動し、鍵ペアの作成を行います。
生成した鍵の所有者を示すメールアドレスを登録します。
登録したメールアドレス情報は、公開鍵ファイルの末尾に反映されます。
SSH端末設定
- 今回、MacOSX 付属のOpenSSHを利用しました。
sw_vers ProductName: Mac OS X ProductVersion: 10.11.6 BuildVersion: 15G1421
ssh -V OpenSSH_6.9p1, LibreSSL 2.1.8
「kr」インストール
OSXに、Kryptonite のインストールを実施します。
curl https://krypt.co/kr | sh
途中、パッケージの導入に伴う「sudo」の実行のため、パスワード入力が求められます。
Linux OS用として、fedora、centos、redhat、debian、arch、SuSE の設定が用意されています。
ペアリング
Kryptoniteのインストール後、「kr」コマンドを利用し、アプリと端末の紐付けを実施します。
kr pair
ターミナルに表示されたQRコード、アプリのカメラで認識させます。
ペアリングに成功した端末は、モバイルアプリで「Paired Decices」として表示されます。
SSH 公開鍵設定
ペアリング済みの端末で「kr me」コマンドを実行すると、作成した公開鍵を確認する事ができます。
$ kr me ssh-rsa AAAAB3NzaC1yc2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 9ENrz5NgSwibiZiCQ== kryptonite@xxxxx.xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Copy this key to your clipboard using "kr copy" or add it to a service like Github using "kr github". Type "kr" to see all available commands.
「kr copy aws」コマンドを利用すると、Ec2のキーペアとしてインポートできる公開鍵情報が クリップボードに保存されます。
$ kr copy aws Public key copied to clipboard.
SSH接続環境の用意
インポートしたキーペアを利用し、Ec2インスタンス(AmazonLinux)を起動します。
起動済みのEc2インスタンスのSSH接続にKryptoniteを利用する場合、作成した公開鍵を「~/.ssh/authorized_keys」に追記します。
SSH接続先の登録
「kr add」コマンドを利用し、SSH接続先の登録を行います。
- AmazonLinux (ec2-user) 接続例
kr add ec2-user@<接続先パブリックIP>
※パブリックIPは、EIP、FQDNなどの指定も可能です。
SSH接続
ssh ec2-user@<接続先パブリックIP>
- SSHコマンドの実行後、スマートフォンアプリの承認待ち表示となります。
- スマートフォンアプリで承認を実施します
- 承認後、SSH接続が成功し操作可能となります。
まとめ
Kryptonite の利用により、は、スマートフォン上に保存された秘密鍵を参照する事なく、公開鍵認証によるSSH接続を行う事が可能となりました。
Kryptonite、アプリで作成した公開鍵をSSH接続先(サーバ)に登録するだけで、 特別なサーバ設定を実施する事なく、仮想MFAを利用した二段階認証に匹敵する認証が実現できます。
秘密鍵を保存するスマートフォンの故障や、関係するサービスが停止した場合の備えは必要と思われますが、 秘密鍵の漏洩対策として簡単に利用できるKryptonite、ぜひいちどお試しください。